home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Run Magazine ReRun 1988 September & October
/
rerun-1988-09-10a.d64
/
flipper 34
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
5KB
|
154 lines
10 rem copyright 1988 francis saffell
20 poke52,32:poke56,32:clr:dims$(34),c(34,2),i,j,w,x,y,d,g,c,h
30 pn=1:po=1:t=1:rf=1:rs=1:a=1064:a1=53272:a2=54272:a3=a:a4=56576:a5=53281
40 b=128:b1=40:b2=999:l=1024:m=256:n=252:z=960
50 p=251:q=254:r=679:s=648:ch=32:f$="":g$="":g1$="":g2$="":r$=chr$(13)
60 printchr$(142)chr$(8):poke650,b:pokea5-1,0:pokea5,0:poke649,1
70 print"[147]after setting up, press \ keywait ....":gosub570
80 poke198,0:gosub1210
90 c=peek(a):ifc<bthenc=c+b:goto110
100 c=c-b
110 w=a+a2:d=peek(w)and15:pokew,3-t:pokea,c
120 getg$:ifg$=""then120
130 ifc>=bthenc=c-b:goto150
140 c=c+b
150 pokea,c:pokew,d:g=asc(g$):ifg=13theng=ch:goto400
160 ifg=92thengosub1420:goto80
170 if(g>31andg<b)org>160then370
180 ifa<1104andg=145then90
190 ifa>1983andg=17then90
200 ifa=a3andg=157then90
210 ifa=2023andg=29then90
220 ifg=145thena=a-b1:goto90
230 ifg=17thena=a+b1:goto90
240 ifg=157thena=a-1:goto90
250 ifg=29thena=a+1:goto90
260 ifg=20thengosub440:goto90
270 ifg=5thengosub1350:goto80
280 ifg=148thent=abs(t-1):goto80
290 ifg=141thench=peek(a):goto90
300 ifg=18thenof=b:goto90
310 ifg=146thenof=0:goto90
320 ifg=19thena=a3:goto90
330 ifg=147thengosub850:goto80
340 ifg<133org>140then90
350 ong-132gosub1070,1170,1140,470,1230,1310,880,950
360 goto80
370 ifg>191andg<224theng=g-b:goto390
380 if(g>159andg<192)or(g>63andg<96)theng=g-64
390 pokea,g+of:goto410
400 pokea,g
410 pokew,5:ifa<2023thena=a+t
420 goto90
430 rem delete*
440 pokea,32:ifa<>a3thena=a-1
450 return
460 rem flip*
470 pokes,144:gosub840:pokes,4:poke808,239
480 fori=rstorf:wait53265,b:x=c(i,0):y=c(i,1)::::::::::::::::::::::::
490 pokea4,x:pokea1,y:ford=0toh:nextd:getg$:ifg$=""then520
500 ifg$="+"thenh=h+25
510 ifg$="-"andh>24thenh=h-25
520 nexti:ifg$<>"[136]"then480
530 rem reset*
540 pokea4+2,peek(a4+2)or3:pokea4,199:pokea1,21:poke808,237
550 fori=0tor:next:return
560 rem set up*
570 poke56333,127:poke1,51:ss=53248:se=55040:de=20480:gosub1390
580 poke1,55:poke56333,129:d=0:fori=0to2:forj=0to15:ifi=0andj<8then630
590 ifi=1andj>3andj<6then630
600 ifi=2andj>3andj<8then630
610 d=d+1:c(d,0)=199-i:c(d,1)=j*16+4:c(d,2)=i*16384+j*l
620 pokes,c(d,2)/m:gosub1290:pokec(d,2)+39,32
630 nextj,i:pokes,192:gosub840
640 print"f1 - set page in # and fetch"
650 print"f2 - set flip range"
660 print"f3 - set page out #"
670 print"f4 - page # display on/off"
680 print"f5 - stash screen to page out #"
690 print"f6 - load a page set"
700 print"f7 - start/stop page-flipping"
710 print" + slower"
720 print" - faster"
730 print"f8 - save pages in flip range"
740 print" \ - return to editor/help"
750 print"ctrl/wht - remove white characters"
760 print"inst - cursor advance on/off"
770 print"shft/rtn - hold character"
780 print"rtn - place character":pokes,4:fori=rto759:readg:pokei,g:next
790 data165,1,41,254,133,1,169,0,168,177,251,133,254,165,1,9,1,133,1,96
800 data165,1,41,254,133,1,169,2,162,8,160,255,32,186,255,173,244,2,162,245
810 data160,2,32,189,255,173,240,2,133,251,173,241,2,133,252,169,251,174,242,2
820 data172,243,2,32,216,255,165,1,9,1,133,1,96,0,0,0,0,0,64,48,58
830 rem clear*
840 pokea5,15:print"[147]":pokea5,0:return
850 gosub1290:input"clear screen (y/n)";g$:ifg$="y"thengosub840
860 return
870 rem load*
880 gosub1290:input"load (y/n)";g$:ifg$<>"y"thenreturn
890 gosub1290:print""spc(18)f$:input"name of page set";f$:iff$=""then880
900 open3,8,3,"0:"+f$+".dir,s,r":input#3,g$,g1$:rs=val(g$):rf=val(g1$)
910 fori=rstorf:input#3,s$(i),g$,g1$,g2$:next:close3
920 fori=rstorf:gosub1290:print"loading page";i
930 open1,8,1,s$(i):poke780,0:sys65493:close1:next:return
940 rem save*
950 gosub1290:input"save pages (y/n)";g$:ifg$<>"y"thenreturn
960 gosub1290:print""spc(24)f$:input"set name (1 to 5 char)";f$
970 iff$=""orlen(f$)>5then950
980 open15,8,15,"s0:"+f$+"*":close15
990 open3,8,3,f$+".dir,s,w":print#3,str$(rs);r$;str$(rf);r$;:fori=rstorf
1000 gosub1290:print"saving page"i:g=c(i,2):d=g+1000
1010 g$=f$+"."+right$(str$(i),2):ifi<10theng$=f$+"."+right$(str$(i),1)
1020 y%=g/m:print#3,g$;r$;str$(c(i,0));r$;str$(c(i,1));r$;str$(y%);r$;
1030 y=len(g$):forj=1toy:poke759+j,asc(mid$(g$,j,1)):nextj
1040 poke756,y+3:poke753,g/m:poke752,g-(peek(753)*m)
1050 poke755,d/m:poke754,d-(peek(755)*m):sys699:nexti:close3:return
1060 rem fetch*
1070 gosub1290:print""spc(17)pn:input"page in # (1-34)";g$:gosub1490
1080 iffthen1070
1090 pn=val(g$):gosub840:print"fetching"pn:g=c(pn,2)
1100 ifpn<27thenss=g+b1:se=ss+z:de=a3:gosub1390:return
1110 fori=b1tob2:poken,(g+i)/m:pokep,g+i-peek(n)*m:sysr:pokel+i,peek(q):next
1120 return
1130 rem stash*
1140 ss=a3:se=ss+z:de=c(po,2)+b1:gosub1390:ifpo>rfthenrf=po
1150 pokes,144:gosub840:pokes,4:return
1160 rem page out*
1170 gosub1290:print""spc(18)po+1:input"page out # (1-34)";g$:gosub1490
1180 iffthen1170
1190 po=val(g$)
1200 rem heading*
1210 gosub1290:print"page in"pn" page out"po" range"rs"-"rf:return
1220 rem range*
1230 gosub1290:print""spc(19)rs:input"range start (1-34)";g$:gosub1490
1240 iffthen1230
1250 gosub1290:print""spc(20)rf:input"range finish (1-34)";g1$:gosub1490
1260 iffthen1250
1270 ifg1$<g$then1230
1280 rs=val(g$):rf=val(g1$):return
1290 print" ":return
1300 rem page #*
1310 gosub1290:input"show page # (y/n)";g$:fori=1to34:pokes,c(i,2)/m:gosub1290
1320 ifg$="y"thenprint"page"str$(i),c(i,2)
1330 next:pokes,4:return
1340 rem clear*
1350 gosub1290:input"remove background (y/n)";g$:ifg$<>"y"thenreturn
1360 fori=a3to2023:g=peek(i+a2)and15:ifg=15thenpokei,32
1370 next:return
1380 rem move*
1390 c=se-ss:d=c+de:x%=c/m:x=c-m*x%:y%=(d-x)/m:y=d-m*y%-x
1400 w%=(se-x)/m:w=se-m*w%-x:poke781,x%+1:poke782,x:poke88,y:poke89,y%
1410 poke90,w:poke91,w%:sys41964:return
1420 rem help*
1430 poke808,239:ss=a3:se=ss+z:de=50216:gosub1390:ss=55336:se=ss+z:de=51213
1440 gosub1390:pokes,144:gosub840:pokes,4:ss=49192:se=ss+z:de=a3:gosub1390
1450 getg$:ifg$<>"\"then1450
1460 ss=50216:se=ss+z:de=a3:gosub1390
1470 ss=51213:se=ss+z:de=55336:gosub1390:poke808,237:return
1480 rem check*
1490 f=0:c=len(g$):x=asc(left$(g$,1)):y=asc(right$(g$,1)):ifc>2thenf=-1
1500 ifc=2andx>51thenf=-1
1510 ifx=51and(y<48ory>52)thenf=-1
1520 ifx<49orx>57ory<48ory>57thenf=-1
1530 return